6.6 行索引设置为列数据
前面是df.set_index()函数将列数据设置为行索引,现在要反向操作,将行索引设置为列数据,则可以使用df.reset_index()函数,在实际工作中经常会将列数据设置为行索引,做完数据处理完后再还原回来,结构如下:
df.reset_index(level=None,drop=False,inplace=False,col_level=0,col_fill=””)
level :指定要设置为列数据的行索引级别,参数类型可以是数字、字符串、元组或列表,
比如该参数设置为0表示将分层索引的第1层设置为列数据,也可以写行索引对应的标题名称, 如果要将多个索引层级设置为列数据,就可以将多个索引层级的标题写入列表,元组中,默认情况下将所有级别设置为列数据。
drop :是否删除行索引
inplce :是否就地修改
col_level :如果列具有多个级别(分层索引),则可以插到指定列层级,默认请况下,会插入到第1层中。
Col_fill :如果列有多个层级,则确定其他层级的命名方式,如果没有,则索引名称为该参数指定的值 。
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.文件导入分层索引设置.xlsx",sheet_name="工资表1" ,
header=[ 0,1 ], index_col =[ 0,1,2 ])
print (df)
df=df.reset_index([ "姓名","部门" ], col_level = 1 ) #把姓名和部门放到第二层 。
print (df)
返回:
季度 | 1季度 | 2季度 | ||||||
---|---|---|---|---|---|---|---|---|
月份 | 1月 | 2月 | 3月 | 4月 | 5月 | 6月 | ||
部门 | 工号 | 姓名 | ||||||
销售部 | NED1 | 张三 | 11453 | 12800 | 13023 | 11485 | 12345 | 11567 |
NED2 | 李四 | 12456 | 11234 | 12768 | 13876 | 12742 | 13643 | |
财务部 | NED3 | 王麻子 | 12675 | 11746 | 127314 | 11907 | 14238 | 11564 |
NED4 | 小曾 | 14643 | 11033 | 12857 | 13956 | 11963 | 12087 |
季度 | 1季度 | 2季度 | ||||||
---|---|---|---|---|---|---|---|---|
月份 | 部门 | 姓名 | 1月 | 2月 | 3月 | 4月 | 5月 | 6月 |
工号 | ||||||||
NED1 | 销售部 | 张三 | 11453 | 12800 | 13023 | 11485 | 12345 | 11567 |
NED2 | 销售部 | 李四 | 12456 | 11234 | 12768 | 13876 | 12742 | 13643 |
NED3 | 财务部 | 王麻子 | 12675 | 11746 | 127314 | 11907 | 14238 | 11564 |
NED4 | 财务部 | 小曾 | 14643 | 11033 | 12857 | 13956 | 11963 | 12087 |